<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Living Code</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="MSSmartTagsPreventParsing" content="true">
        <meta name="generator" content="Sandcastle">
        <link rel="shortcut icon" href="/image/favicon.ico">
        <link rel="alternate" type="application/atom+xml" title="Living Code"      
            href="http://livingcode.org//index.atom" >
        <link rel="stylesheet" type="text/css" href="/style/sand.css">
        <!--#include virtual="/includes/scripts.incl" -->
    </head>
    <body>
        <div id="page_container">
            <div id="header">
                <a href="http://livingcode.org/index.html" id="icon"><img src="http://livingcode.org/image/livingcode_icon.png" alt=""/></a>
                <a href="http://livingcode.org/index.html" id="logo"><img src="http://livingcode.org/image/livingcode_logo.jpg" alt=""/></a>
                <h1>Living Code</h1>
                <h2>A program is a process, not a thing</h2>
            </div>
            <div id="content">
                    <div id="entry">
                        <h2>Silent Boggle</h2>
                        <h3>Boggle generator and solver</h3>
                        <p>When my daughter was born, my wife Daniela and I like to play Boggle a lot, but we worried about the noise waking the baby, so I coded up a quick CGI script to create a web page listing the letters with the same frequency as the game. That worked OK, and now we could play without rattling the box, but of course a project never stops where you thought it would. I kept thinking that it would be cool if I could list all the words available, making it useful for learning new vocabulary, or just checking your score. It turns out that Peter Norvig covered solving Boggle as an AI problem in his book AI: A Modern Approach. And he also provides the code from the book, in both Lisp and Python. So, armed with a standard linux word list, munged to remove words illegal or impossible in Boggle (and to handle my funky hack involving the Qu face of the Boggle dice) and the AIMA python library, I was able to get something going. A little slow, and resource intensive, but it works (if that project ever starts getting much traffic, I'll have to stick the wordlist in a separate, long-running process).</p>
                        <iframe src="http://livingcode.org/miniproject/boggle/index.py" height="600px" width="100%"></iframe>
                        <h3><a href="http://livingcode.org/miniproject/">More miniprojects</a></h3>
                     </div>
    
    
            </div> <!-- end content -->
            <div id="sidebar">
                <!--#include virtual="/includes/about.incl" -->
                <!--#include virtual="/includes/links.incl" -->
                <!--#include virtual="/includes/tagcloud.incl" -->

            </div> <!-- end sidebar -->
        </div> <!-- end page_container -->
    </body>
</html>

